﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZhouYu.DreamTour.Model;
using ZhouYu.DreamTour.ViewModel;

namespace ZhouYu.DreamTour.BLL.IService
{
    public interface IUserService:IDenpendecy
    {



        // 用户登录方法
        ResponseResult LoginUserInfo(UserInfo userInfo);

        // 用户手机注册
        ResponseResult AddUserInfo(UserInfo userInfo);

        //用户邮箱注册
        ResponseResult AddUserEmailInfo(UserInfo userInfo);

        //查询邮箱验证码是否存在
        ResponseResult CheckEmailCode(EmailInfo emailInfo);

        //查询邮箱是否存在
        ResponseResult CheckUser_Email(UserInfo userInfo);

        // 查询手机号
        ResponseResult CheckUserTel(UserInfo userInfo);

        // 根据id获取用户信息
        ResponseResult GetUserById(int id);

        // 根据id获取用户现金账号信息
        ResponseResult GetCashById(int id);

        /// <summary>
        /// 根据id查询用户订单信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetOrderById(int id);

        /// <summary>
        /// 根据主键查询抵用卷余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetVoucherByKey(int id);


        /// <summary>
        /// 根据id查询用户抵用卷信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetVoucherById(int id);

        /// <summary>
        /// 修改用户抵用卷余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult EditUserVoucher(UserInfo user);

        /// <summary>
        /// 修改抵用卷状态
        /// </summary>
        /// <param name="id"></param>
        ResponseResult EditVoucherState(Voucher voucher);

        /// <summary>
        /// 根据用户id查询旅游卷信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetTourVo(int id);

        /// <summary>
        /// 根据主键查询旅游卷额卷信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetTravelVoByKey(int id);


        /// <summary>
        /// 修改用户旅游卷余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult EditUserTravelVo(UserInfo user);


        /// <summary>
        /// 修改旅游卷状态
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult EditTravelVoState(Travelvo travelvo);

        /// <summary>
        /// 校验旅游卷密码是否正确
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult CheckTravelVoPwd(Travelvo travelvo);

        /// <summary>
        /// 获取用户旅游订单集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        List<OrderInfo> GetTourOrder(int id);

        /// <summary>
        /// 获取用户团购订单集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        List<OrderInfo> GetGroupOrder(int id);


        /// <summary>
        /// 获取用户餐饮订单集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        List<OrderInfo> GetCateringOrder(int id);

        /// <summary>
        /// 获取用户酒店订单集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        List<OrderInfo> GetHotelOrder(int id);


        /// <summary>
        /// 获取用户特产订单集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        List<OrderInfo> GetGoodsOrder(int id);

        #region 根据拥护ID查询现金账号表
        /// <summary>
        /// 根据拥护ID查询现金账号表
        /// </summary>
        /// <param name="User_Id"></param>
        /// <returns></returns>
        ResponseResult GetCashnumber(int User_Id);
        #endregion


        /// <summary>
        /// 修改当前用户密码
        /// </summary>
        /// <returns></returns>
        int Changepwd(string Pwd, int UserId);

        /// <summary>
        /// 获取地址列表
        /// </summary>
        /// <returns></returns>
        List<DeliveryAddress> AddressList(int UserId);

        /// <summary>
        /// 获取积分列表
        /// </summary>
        /// <param name="Createtime"></param>
        /// <param name="Effective"></param>
        /// <param name="IntegralName"></param>
        /// <returns></returns>
        List<Custompoints> IntegralList(string Createtime, string Effective, int User_Id);

  

        ///<summary>
        ///根据Id删除配送地址
        ///</summary>
        ///<returns</resturns>
        int DeleteAddress(int Id);

        /// <summary>
        /// 增加配送地址
        /// </summary>
        /// <param name="address"></param>
        /// <returns></returns>
        int AddAddress(DeliveryAddress address);


        /// <summary>
        /// 修改配送地址
        /// </summary>
        /// <param name="address"></param>
        /// <returns></returns>
        int UpdateAddress(DeliveryAddress address);


       

        /// <summary>
        /// 根据Id查询用户积分
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        Custompoints Queryintegral(int UserId);
        /// <summary>
        /// 根据用户名查询待点评次数
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        Usercomment QueryUsertobecommentedon(int UserId);


        /// <summary>
        ///根据用户Id查询用户提问记录
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        List<Questions> Queryuserask(int UserId);

        /// <summary>
        ///根据用户Id查询用户回复记录
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        List<Reply> QueryReply(int UserId);

 
        /// <summary>
        /// 添加发起人信息表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddOriginator(Originator originator);

        /// <summary>
        /// 获取发起人信息表最后一条记录的主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetOriginatorLast();

        /// <summary>
        /// 获取结伴同行表最后一条记录的主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetColleagueLast();


        /// <summary>
        /// 添加结伴同行表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddColleague(Colleague colleague);

        /// <summary>
        /// 添加结伴同行人数表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddNumbers(List<Number> numbers);


        /// <summary>
        /// 获取返现现金账号信息记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCashReturn(int id);

        /// <summary>
        /// 获取提现现金账号信息记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCash(int id);


        /// <summary>
        /// 获取返现现金账号信息记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCashReturnCount(int id);



        /// <summary>
        /// 获取提现现金账号信息记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCashCount(int id);


        /// <summary>
        /// 获取用户现金账户余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCashbalance(int id);


        /// <summary>
        /// 添加提现记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddCashOut(CashOut cash);

        /// <summary>
        /// 充值现金账号添加余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult RechargeCashBalance(Cashnumber cashnumber);


        /// <summary>
        /// 添加现金帐号操作记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddCashnumber_record(Cashnumber_record cashnumber_Record);

        /// <summary>
        /// 修改现金账号余额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult EditCashBalance(Cashnumber cashnumber);


        /// <summary>
        /// 查询审核未通过的信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult QueryExamine();


        /// <summary>
        /// 发送邮箱验证码
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        ResponseResult SendEmailCode(string email);


        /// <summary>
        /// 添加旅游卷
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddTravelVo(Travelvo travelvo);

        /// <summary>
        /// 查询当前用户申请的结伴同行集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetColleagueByUId(Colleague colleague);
     
        //查询用户已点评
        List<Usercomment> Querycomment(int userId);
        //删除用户点评
        int Deletecomments(int id);
        //修改地址状态
        int Modifyaddressstatus(int Id);
        //修改地址状态全部为0
        int UpdateAlladdressStates(int UserId);


        /// <summary>
        /// 修改用户基本信息
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        ResponseResult EditUserInfo(UserInfo userInfo);


        /// <summary>
        /// 修改用户手机号
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        ResponseResult EditUserTel(UserInfo userInfo);

        /// <summary>
        /// 修改用户邮箱地址
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        ResponseResult EditUserEmail(UserInfo userInfo);


        /// <summary>
        /// 获取现金账号操作表最后一条记录的主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetCashRecordLast();


        /// <summary>
        /// 增加账户冻结金额
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddCashFreeze(Cashnumber cashnumber);


        /// <summary>
        /// 查询所有结伴同行集合
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetColleague();


        #region 绑定银行卡
        /// <summary>
        /// 绑定银行卡
        /// </summary>
        /// <param name="User_Id"></param>
        /// <returns></returns>
        ResponseResult BindBank(User_Bank user_Bank);
        #endregion


        #region 获取当前登录用户绑定的银行卡集合
        /// <summary>
        /// 获取当前登录用户绑定的银行卡集合
        /// </summary>
        /// <param name="User_Id"></param>
        /// <returns></returns>
        ResponseResult QueryUserBank(int User_Id);
        #endregion

        #region 解绑指定银行卡
        /// <summary>
        /// 解绑指定银行卡
        /// </summary>
        /// <param name="User_Id"></param>
        /// <returns></returns>
        ResponseResult DelBank(User_Bank user_Bank);
        #endregion

        /// <summary>
        /// 获取旅游卷最后一条记录的主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult GetTravelVoLast(Travelvo travelvo);

        /// <summary>
        /// 添加旅游卷操作记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ResponseResult AddTravelVoRecord(Travelvo_record travelvo_Record);
    }
}
